package top.lixunda.ecommerce.server.good.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import top.lixunda.ecommerce.server.good.api.entity.db.EnshrineStoreDO;
import top.lixunda.ecommerce.server.good.api.entity.dto.EnshrineStoreQueryDTO;
import top.lixunda.ecommerce.server.business.api.entity.dto.PageDTO;

import java.util.List;

/**
 * <p>
 * 商品收藏 服务类
 * </p>
 *
 * @author Xumda
 * @since 2020-01-06
 */
public interface IEnshrineStoreService extends IService<EnshrineStoreDO> {

    /**
     * 批量增加店铺收藏数据
     *
     * @param ids 需要收藏的店铺id
     * @return 返回收藏成功的数量
     */
    Integer addEnshrineStore(List<Integer> ids);

    /**
     * 批量移除店铺收藏数据
     *
     * @param ids 收藏id
     * @return 成功移除的数量
     */
    Integer removeEnshrineStore(List<Integer> ids);

    /**
     * 获取当前用户的所有收藏信息
     *
     * @return 收藏信息列表
     */
    List<EnshrineStoreDO> queryAllEnshrineStore();

    /**
     * 条件查询
     *
     * @param enshrineStoreQueryDTO 查询条件
     * @return 收藏数据
     */
    List<EnshrineStoreDO> queryEnshrineStoreWrapper(EnshrineStoreQueryDTO enshrineStoreQueryDTO);

    /**
     * 分页查询
     *
     * @param pageDTO 分页数据，条件不起作用
     * @return 收藏数据
     */
    IPage<EnshrineStoreDO> queryEnshrineStorePage(PageDTO<EnshrineStoreDO, ?> pageDTO);

    /**
     * 分页条件查询
     *
     * @param pageDTO 分页和查询条件
     * @return 收藏数据
     */
    IPage<EnshrineStoreDO> queryEnshrineStorePageWrapper(PageDTO<EnshrineStoreDO, EnshrineStoreQueryDTO> pageDTO);

    /**
     * 根据id查询单个数据
     *
     * @param id id
     * @return 单个数据
     */
    EnshrineStoreDO queryById(Integer id);

    /**
     * 根据多个id查询数据
     *
     * @param ids ids
     * @return 多个数据
     */
    List<EnshrineStoreDO> queryByIds(List<Integer> ids);

}
